쿠버네티스 업그레이드 및 유지보수
쿠버네티스 클러스터의 안정적인 운영을 위해서는 정기적인 업그레이드와 유지보수가 필수적입니다.
클러스터 업그레이드 전략
- 단계적 업그레이드: 마이너 버전 단위로 순차적 업그레이드 (예: 1.21 → 1.22 → 1.23)
- 컨트롤 플레인: 항상 컨트롤 플레인 컴포넌트를 먼저 업그레이드한 후 노드 업그레이드
- 노드 롤링 업데이트: 워크로드 중단 최소화를 위해 노드를 순차적으로 업그레이드
업그레이드 절차 예시
컨트롤 플레인 업그레이드
# 현재 버전 확인
kubectl version --short
# kubeadm 업그레이드 계획 확인
sudo kubeadm upgrade plan
# kubeadm 업그레이드 적용
sudo kubeadm upgrade apply v1.24.0
# 컨트롤 플레인 노드에서 kubelet 및 kubectl 업그레이드
sudo apt-get update
sudo apt-get install -y kubelet=1.24.0-00 kubectl=1.24.0-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
워커 노드 업그레이드
# 노드 비우기(drain)
kubectl drain <node-name> --ignore-daemonsets
# 노드에서 kubeadm 업그레이드
sudo kubeadm upgrade node
# kubelet 업그레이드 및 재시작
sudo apt-get update
sudo apt-get install -y kubelet=1.24.0-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
# 노드 다시 스케줄 가능하게 설정
kubectl uncordon <node-name>
etcd 백업 및 복구
etcd 백업 생성
# 인증서 사용하여 etcd 스냅샷 생성
sudo ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
etcd 복구
# etcd 중지
sudo systemctl stop etcd
# 스냅샷에서 복구
sudo ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot.db \
--data-dir=/var/lib/etcd-restore
# 복구된 데이터 디렉토리 사용하도록 설정 변경
sudo mv /var/lib/etcd /var/lib/etcd.old
sudo mv /var/lib/etcd-restore /var/lib/etcd
# etcd 재시작
sudo systemctl start etcd
클러스터 유지보수 모범 사례
- 정기적인 백업: etcd 데이터와 클러스터 구성 정보 정기 백업
- 업그레이드 테스트: 프로덕션 적용 전 테스트 환경에서 업그레이드 검증
- 버전 호환성 확인: API 버전 호환성과 지원 중단 기능 확인
- 업그레이드 창: 계획된 다운타임 또는 저부하 시간에 업그레이드 수행
- 롤백 계획: 문제 발생 시 이전 버전으로 롤백 절차 준비
CKA 시험 관련 중요 포인트
- kubeadm을 사용한 업그레이드 절차 숙지
- etcd 백업 및 복구 명령어 이해
- 노드 drain/cordon/uncordon 작업 이해
- 클러스터 건강 상태 확인 방법 학습